home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / help10.arc / HELP.DOC < prev    next >
Text File  |  1987-03-06  |  7KB  |  108 lines

  1.                          HELP.COM by Bob Montgomery 2/25/87
  2.      
  3.      This program is based on QHELP.ASM by Kurt Schelin, but was 
  4.      completely rewritten to make it a template for creating your own 
  5.      popup help screens. It contains all of the assembly code required to 
  6.      make your message pop up using your choice of a shift key combination 
  7.      for the hot keys; the shift keys are Cntrl, Alt, Left Shift, Right 
  8.      Shift, Caps Lock, Number Lock, and Scroll Lock. The code is written 
  9.      in A86 and MASM assembler formats, whichever you choose to use; I 
  10.      prefer A86 because it doesn't need the org, segment, assume, ends, 
  11.      etc assembler directives and is a little smarter. Border characters 
  12.      can be used to partition the help display, and to make it look more 
  13.      professional. The program automatically centers the help screen on 
  14.      the display, in the colors you selected with the Colattr equate.
  15.      
  16.      The help message can be any message you desire with the following 
  17.      restrictions:
  18.           1. The message must not exceed 80 characters/line-dictated by 
  19.              screen width.
  20.           2. The message cannot exceed 25 lines-dictated by the screen 
  21.              length.
  22.           3. Each line must be the same length-blank filled to make so.
  23.  
  24.      To make your own help screen, pick a combination of shift keys to be 
  25.      your hot keys and change the equate called Hotkey to the sum of these 
  26.      keys. In the template, the hot keys are Cntrl-Left Shift. Then, 
  27.      change the Colattr equate for the colors you want the help window to 
  28.      be; the first nibble is the background color (0-7), and the second 
  29.      nibble is the foreground color (0-15). If you want the help window to 
  30.      blink, add 8 to the background color. Then change the db statements 
  31.      at Hlpst and the following lines to your message; remember that each 
  32.      line must have the same number of characters. In the template, each 
  33.      line is a different upper case alphabetic letter. You may have from 1 
  34.      to 80 characters/line, and you may have from 1 to 25 lines for your 
  35.      help screen. The program will automatically center the help screen on 
  36.      the display; that's what the equates following the help message do. 
  37.      Then, assemble the source to the filename of your choice, and you 
  38.      have a help screen COM program. The help screen for VEdit Plus 
  39.      (VHELP.MSG) is included as an example, and can be substituted for the 
  40.      test screen between the equal sign borders.
  41.      
  42.      The program works with all displays (Monochrome, CGA, and EGA) in all 
  43.      80 column text modes (will not work in graphics mode). It is a 
  44.      'terminate and stay resident' program, and can be used with MARK & 
  45.      RELEASE to free up memory when it is no longer required. For 
  46.      instance, with QEdit, I do MARK, QHELP, QEDIT (filename), RELEASE in 
  47.      a batch file.
  48.      
  49.      The source is liberally commented so you can understand how it works. 
  50.      The first thing that happens when you call it is a jump to the 
  51.      initialize routine, which gets and saves the old keyboard interrupt 
  52.      (Int 9) and the vectors the keyboard interrupt to this program. Then, 
  53.      it terminates but stays resident, and the Start portion of the 
  54.      program handles all keyboard interrupts from this point on. 
  55.      
  56.      A keyboard interrupt is generated each time a key is pressed or 
  57.      released, and the neccessary steps required to get the key are known 
  58.      only to the BIOS Int 9 routine. Therefore, we must call the BIOS Int 
  59.      9 routine from this program to handle the key action. The only 
  60.      problem with this is that the BIOS Int 9 program is an interrupt 
  61.      handler and not a subroutine, which means it pops the return address 
  62.      (like a subroutine) and the flag register at completion. To fake it 
  63.      out and keep the stack pointer where it should be, we push the flags 
  64.      before calling the BIOS Int 9 routine (as a subroutine), and it pops 
  65.      the flags when it is done. The only thing the program looks for is 
  66.      the hot key combination on each keyboard interrupt, and it uses a 
  67.      BIOS service (Int 16-get shift status) to do this. Any other keys are 
  68.      ignored, but the action required to record the key press or release 
  69.      has been done by the call to the BIOS Int 9 routine in the new Int 9 
  70.      program.  If the hot keys have been pressed, the program checks a 
  71.      flag to see if the help screen is already up; if so, the hot keys are 
  72.      ignored. This is done in the Start portion of the program.
  73.      
  74.      If the hot keys are pressed and the help screen is not up, the 
  75.      program then determines the current video mode and page, and saves 
  76.      it. From this, the current video display area of memory is 
  77.      determined. Then, the cursor is disabled and the help window area of 
  78.      the display is copied to a buffer in the program, so it can be 
  79.      restored when the help window is removed. The help window data is 
  80.      then copied to display memory with whatever attribute (color) you 
  81.      selected, and the display is then unblanked. A flag is set to 
  82.      indicate that the help window is up. Your help data is now visible on 
  83.      the display, and is centered horizontally and vertically, and in the 
  84.      color you selected with the Colattr equate (if you have a color 
  85.      display). To avoid 'snow' on CGA monitors while video memory is being 
  86.      accessed, the display is blanked during video read/write times, and 
  87.      blanking and unblanking occur at vertical retrace time; this is not 
  88.      done for the monochrome monitor, since it doesn't have the 'snow' 
  89.      problem.
  90.      
  91.      Now the program waits for the Escape key, and ignores all others. 
  92.      When the Escape key is finally pressed, video is disabled and the old 
  93.      screen data is put back on the display. Then the cursor is enabled 
  94.      and the display is unblanked, and you have your original screen back.
  95.      The flag which indicates the help screen is up is cleared, and the 
  96.      program resumes looking for the hot keys.
  97.      
  98.      I hope this program is of some use to you, and you are free to copy 
  99.      and distribute it, but please distribute it in its original form so 
  100.      it can be used by others. I also hope you follow the source listing, 
  101.      and maybe learn something in the process. This is my contribution to 
  102.      the shareware community. Enjoy the program. 
  103.      
  104.      If you have any comments or suggestions, I can be contacted at the 
  105.      Black Hole BBS in Orlando, Fl., 1200/2400 Baud (305) 260-6397.
  106.      
  107.      Bob Montgomey
  108.